1. Field
The present invention is generally directed to computing operations performed in a computing system. More particularly, the present invention relates to computing operations performed by a processing unit (e.g., a graphics processing unit (GPU)) in a computing system.
2. Background Art
Display images are comprised of thousands of dots, where each dot represents one of thousands or millions of colors. These dots are known as picture elements, or “pixels”. Each pixel has multiple attributes associated with it, including a color and a texture which is represented by a numerical value stored in the computer system. A three dimensional (3D) display image, although displayed using a two dimensional (2D) array of pixels, may in fact be created by rendering a plurality of graphical objects.
Examples of graphical objects include points, lines, polygons, and 3D solid objects. Points, lines, and polygons represent rendering primitives (aka “prims”) which are the basis for most rendering instructions. More complex structures, such as 3D objects, are formed from a combination or mesh of such primitives. To display a particular scene, the visible primitives associated with the scene are drawn individually by determining those pixels that fall within the edges of the primitives, and obtaining the attributes of the primitives that correspond to each of those pixels.
The inefficient processing of these primitives reduces system performance in rendering complex scenes, for example, to a display. For example, in most graphics systems, primitives are processed serially, which significantly slows the rendering of complex scenes.
An additional challenge is that most input index streams (e.g., input indices), created in the production of primitives are not formatted in a manner that is ideal for processing by the multiple primitive generation units that reside in conventional graphics systems. Consequently, these input indices are not amenable for scalable primitive generators.